
/**
 * @version $Id$
 * @create 2012-12-23 16:26:21 By xjiujiu
 * @description HongJuZi Framework
 * @copyRight Copyright (c) 2011-2012 http://www.xjiujiu.com.All right reserved
 */
(function($) {

    /**
     * 动态加载JS或Css等外部文件工具类 
     * 
     * 如：网站可能需要加载外部的JS插件，及配套的Css文件，像LightBox插件。
     * 那么就可以使用该工具插件来进行动态的加载
     * 
     * @author xjiujiu <xjiujiu@foxmail.com>
     * @package None
     * @since 1.0.0
     */
    var HHRequire  = {
    	head: window.document.getElementsByTagName("head")[0],
    	
        /**
         * 加载Js文件 
         * 
         * Example:
         * <code>
         * HHRequire.js("http://www.xjiujiu.com/hhjslib.js");
         * </code>
         * 
         * @author xjiujiu <xjiujiu@foxmail.com>
         * @access public
         * @param  String[] jsPath 给定的Js文件路径
         * @param  Script callback 需要回调的参数
         */
        requireJs: function(jsPath, callback) {
        	require(
    			jsPath,
				function() {
                    if(typeof callback != 'undefined') {
                        callback();
                    }
	        	}
        	);
        },

        /**
         * 加载Css文件 
         * 
         * Example:
         * <code>
         *      HHJsLib.requireCss("http://www.xjiujiu.com/css/hhjslib.css");
         * </code>
         * 
         * @author xjiujiu <xjiujiu@foxmail.com>
         * @access public
         * @param  String[] cssPath 需要加载的css文件路径
         * @param  DOM Object 相对目标对象 
         */
        requireCss: function(cssPath, target) {
        	for(var i in cssPath) {
	            var link    = window.document.createElement("link");
	            link.rel    = "stylesheet";
	            link.type   = "text/css";
	            link.href   = cssPath[i];
	            this.insertElement(link, this.head);
        	}
        },

        /**
         * 插入元素到指定的元素位置中
         * 
         * Example:
         * <code>
         *      HHJsLib.insertElement(document.body, document.createElement("script"));
         * </code>
         * 
         * @author xjiujiu <xjiujiu@foxmail.com>
         * @access public
         * @param  DOM Object ele 需要插入的目标元素
         * @param  DOM Object target 当前元素的父类
         * @param  String loc 插入的位置，默认为当前对象的最下面
         */
        insertElement: function(ele, target, loc) {
        	switch(loc) {
    		default:
	        	target.appendChild(ele);
    			break;
        	}
        },
       
        getJsByUri: function(uri) {
        	
        },
        
        getJsByFileName: function(fileName) {
        	
        },
        
        getCssByUri: function(uri) {
        	
        },
        
        getCssByFileName: function(fileName) {
        	
        },
        
        /**
         * 查看网页是否加载了给定的Js文件
         * 
         * Example:
         * <code>
         *  HHJsLib.isJsLoaded("http://www.xjiujiu.com/hhjslib.js");
         * </code>
         * 
         * @author xjiujiu <xjiujiu@foxmail.com>
         * @access public
         * @param  String filePath 需要加载的文件路径
         * @throws Exception 是否成功加载了Js文件
         */
        isJsLoaded: function(jsPath) {
			for(var item in window.document.scripts) {
				if(jsPath == window.document.scripts[item].href) {
					return window.document.scripts[item];
				}
			}
			throw '还没有加载Js文件：' + jsPath;
        },
        
        /**
         * 查看网页是否加载了给定的css文件
         * 
         * Example:
         * <code>
         *  HHJsLib.isCssLoaded("http://www.xjiujiu.com/hhjslib.js");
         * </code>
         * 
         * @author xjiujiu <xjiujiu@foxmail.com>
         * @access public
         * @param  String filePath 需要加载的文件路径
         * @throws Exception 是否加载成功了css文件
         */
        isCssLoaded: function(cssPath) {
			for(var item in window.document.styleSheets) {
				if(cssPath == window.document.styleSheets[item].href) {
					return window.document.styleSheets[item];
				}
			}
			throw '还没有加载css文件：' + cssPath;
        }
    };
    HHJsLib.extend(HHRequire);
})(jQuery);

